package com.situ.mall.manager.service.impl;

import com.situ.mall.manager.entity.GoodsPic;
import com.situ.mall.manager.mapper.GoodsPicMapper;
import com.situ.mall.manager.service.GoodsPicService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;

@Service
public class GoodsPicServiceImpl implements GoodsPicService {

    @Resource
    private GoodsPicMapper goodsPicMapper;

    @Override
    /**
     * 支持当前事务：
     *  REQUIRED(0),支持当前事务，如果当前已开启事务，则在当前事务内执行。如果当前没有任务，则新建事务并在事务内执行
     *  SUPPORTS(1),支持当前事务，如果当前已开启事务，则在当前事务内执行。如果当前没有开启事务，则在非事务状态下执行
     *  MANDATORY(2),支持当前事务，如果当前已开启事务，则在当前事务内执行。如果当前没有开启事务，抛异常。
     *  不支持当前事务：
     *  REQUIRES_NEW(3),不支持当前事务，如果当前已开启事务，将当前事务挂起，然后新建事务执行。如果当前没有开启事务，则新建一个事务并在事务内执行
     *  NOT_SUPPORTED(4),不支持当前事务，如果当前已开启事务，将当前事务挂起，以非事务方式执行。如果当前没有事务，在非事务状态下执行
     *  NEVER(5),不支持当前事务，如果当前已开启事务，如果当前已开启事务，抛异常。如果当前没有事务，以非事务状态执行
     *  NESTED(6);事务嵌套，如果当前已开启事务，则在事务内再创建一个子事务
     *
     */
    @Transactional(
            propagation = Propagation.REQUIRED  //七个传播机制
    )
    public int addPatch(List<GoodsPic> pics) {
        return goodsPicMapper.insert(pics);
    }

    @Override
    public int removeByGoodsId(Integer goodsId) {
        return goodsPicMapper.deleteByGoodsId(goodsId);
    }
}
